package com.wjm.api.properties;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Properties;
import java.util.Set;

/**
 * Data:2022年07月31日
 * Author:wjm
 * Content: Properties（用于写配置文件的工具类）
 *
 *
 *  Properties常用方法：
 *          Object setProperty(String key,String value)     （可使用这个方法修改配置文件中的属性值，也可以直接在配置文件中修改）
 *                设置集合的键和值，都是String类型的，底层调用的是Hashtable的put方法
 *          String getProperty(String key)
 *                使用此属性列表中指定的键搜索属性
 *          Set<String> stringPropertyNames()
 *                从该属性列表中返回一个不可修改的键集，其中键及其对应的值是字符串
 *          void load(InputStream inStream 或者 Reader reader)
 *               参数需要传入字节输入流或字符输入流
 *          void store(OutputStream out 或 Writer writer, String comments)
 *               以适合使用 load(Reader) 方法的格式，将此 Properties 表中的属性列表（键和元素对）写入输出字符。第二个参数表示换行。
 *
 *
 */
public class PropertiesDemo1 {
    public static void main(String[] args) throws Exception {
        //创建properties对象
        Properties properties = new Properties();

        //创建字符输入流
        FileReader reader = new FileReader("./Java-API-Reflect/src/properties.txt");

        // 从输入流中读取属性列表（键和元素对）
        properties.load(reader);

        //从该属性列表中获取键集
        Set<String> set = properties.stringPropertyNames();
        for (String s:set){
            System.out.println(s);
        }

        //使用此属性列表中指定的键搜索属性
        String className = properties.getProperty("className");
        String method = properties.getProperty("method");
        System.out.println("className="+className);
        System.out.println("method="+method);
        System.out.println("------------------------");

        //创建字符输出流
        FileWriter writer = new FileWriter("./Java-API-Reflect/src/properties.txt");

        //修改属性值，也可以在配置文件中直接修改
        properties.setProperty("className","Teacher");
        properties.setProperty("method","work");

        //将修改的属性值写入输入流，并保存到配置文件中
        properties.store(writer,null);
        
        //读取修改后的属性值
        String className1 = properties.getProperty("className");
        String method1 = properties.getProperty("method");
        System.out.println("修改后的className="+className1);
        System.out.println("修改后的method="+method1);

        //关闭流连接
        reader.close();
        writer.close();





    }
}
